package com.demo.config;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.security.Keys;

import java.security.Key;
import java.util.Date;
import java.util.Map;

public class JwtTemplate {

    private static Key key = Keys.hmacShaKeyFor("sdfaifnalkdsfjsakdfhakdsjfhkjdsahfkdsajhfalkafdsad".getBytes());

    /**
     *   生成JWT字符串
     * @param m    过期时间，单位分钟
     * @param body 业务数据
     * @return 生成成功的jwt字符串
     */
    public static String createJwt(Integer m, Map<String, Object> body) {
        return Jwts.builder()
                .setClaims(body)
                .setExpiration(new Date(System.currentTimeMillis() + m * 60 * 1000))
                .signWith(key)
                .compact();
    }

    /**
     * 对JWT字符串进行解析
     * @param token JWT字符串
     * @return   解析成功之后的主体对象
     */
    public static Claims parseJwt(String token) {
        return Jwts.parserBuilder().setSigningKey(key)
                .build().parseClaimsJws(token).getBody();
    }

}
